Dynamic LINQ Query তৈরি

Microsoft Technologies - লিংক (LinQ) LINQ এর উন্নত ফিচার (Advanced Features of LINQ) |
202
202

Dynamic LINQ ব্যবহার করে আপনি সময় চলতি ডেটা বা শর্তের ভিত্তিতে LINQ কুয়েরি তৈরি এবং এক্সিকিউট করতে পারেন। এটি বিশেষত তখন কাজে আসে যখন আপনাকে কুয়েরি শর্তগুলো রানটাইমে ডাইনামিক্যালি তৈরি করতে হয়, অর্থাৎ কোড লিখার সময় না জানলেও, বিভিন্ন ইনপুট বা কন্ডিশনের উপর ভিত্তি করে কুয়েরি তৈরি এবং চালানো যায়।

Dynamic LINQ লাইব্রেরি মূলত LINQ কুয়েরি স্টেটমেন্টগুলোর জন্য ডাইনামিক কুয়েরি সমর্থন দেয়। এটি LINQ.Expressions এবং System.Linq.Dynamic.Core নামে দুটি সাধারণ লাইব্রেরি ব্যবহার করে। এ লাইব্রেরিগুলোর সাহায্যে আমরা LINQ কুয়েরির শর্তগুলো স্ট্রিং হিসেবে পাস করতে পারি এবং runtime এ কুয়েরি তৈরি ও এক্সিকিউট করতে পারি।


Dynamic LINQ এর প্রয়োজনীয় লাইব্রেরি

Dynamic LINQ ব্যবহার করার জন্য আপনাকে System.Linq.Dynamic.Core প্যাকেজটি ইনস্টল করতে হবে। এটি NuGet প্যাকেজ হিসেবে পাওয়া যায়।

NuGet প্যাকেজ ইনস্টল করা

Install-Package System.Linq.Dynamic.Core

Visual Studio তে NuGet প্যাকেজ ম্যানেজার ব্যবহার করে এটি ইনস্টল করতে পারেন।


Dynamic LINQ Query তৈরির উদাহরণ

ধরা যাক, আমাদের একটি Person ক্লাস আছে এবং আমরা ডাইনামিকভাবে Age এবং Name এর ওপর ভিত্তি করে কুয়েরি তৈরি করতে চাই।

using System;
using System.Linq;
using System.Linq.Dynamic.Core; // Dynamic LINQ এর জন্য

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var people = new[]
        {
            new Person { Name = "Alice", Age = 30 },
            new Person { Name = "Bob", Age = 25 },
            new Person { Name = "Charlie", Age = 35 },
            new Person { Name = "David", Age = 40 }
        };

        // ডাইনামিক কুয়েরি তৈরি করা
        var dynamicQuery = people.AsQueryable().Where("Age > 30");

        foreach (var person in dynamicQuery)
        {
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}

এখানে:

  • Where("Age > 30") স্ট্রিং আকারে কুয়েরি শর্ত প্রদান করা হয়েছে।
  • AsQueryable() ব্যবহার করা হয়েছে যাতে LINQ কুয়েরি সমর্থন পাওয়া যায়।

এটি Age এর মান ৩০ এর বেশি এমন Person গুলি নির্বাচন করবে এবং তাদের নাম ও বয়স প্রিন্ট করবে।


Dynamic LINQ-এ Multiple Conditions

কিছু শর্ত একাধিক হতে পারে এবং এগুলোও রানটাইমে স্ট্রিং আকারে নির্দিষ্ট করা যাবে। ধরুন, আমাদের দুটি শর্ত দিতে হবে, যেমন Age ৩০ এর বেশি এবং Name "Bob" না।

using System;
using System.Linq;
using System.Linq.Dynamic.Core;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var people = new[]
        {
            new Person { Name = "Alice", Age = 30 },
            new Person { Name = "Bob", Age = 25 },
            new Person { Name = "Charlie", Age = 35 },
            new Person { Name = "David", Age = 40 }
        };

        // Multiple conditions
        var dynamicQuery = people.AsQueryable().Where("Age > 30 AND Name != 'Bob'");

        foreach (var person in dynamicQuery)
        {
            Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
        }
    }
}

এখানে:

  • Where("Age > 30 AND Name != 'Bob'") একটি কমপ্লেক্স শর্ত ব্যবহার করা হয়েছে যেখানে দুটি শর্ত একসাথে দেওয়া হয়েছে। প্রথম শর্তে Age ৩০ এর বেশি হতে হবে, এবং দ্বিতীয় শর্তে Name "Bob" না হতে হবে।

এটি Charlie এবং David এর নাম এবং বয়স প্রিন্ট করবে।


Dynamic LINQ with Select

ডাইনামিকভাবে শুধুমাত্র কিছু নির্দিষ্ট প্রোপার্টি নির্বাচন করার জন্য Select ব্যবহার করা যেতে পারে।

using System;
using System.Linq;
using System.Linq.Dynamic.Core;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var people = new[]
        {
            new Person { Name = "Alice", Age = 30 },
            new Person { Name = "Bob", Age = 25 },
            new Person { Name = "Charlie", Age = 35 },
            new Person { Name = "David", Age = 40 }
        };

        // Select only specific fields using dynamic LINQ
        var dynamicQuery = people.AsQueryable().Where("Age > 30").Select("Name");

        foreach (var name in dynamicQuery)
        {
            Console.WriteLine(name); // Output: Charlie, David
        }
    }
}

এখানে:

  • Select("Name") ব্যবহার করে আমরা শুধুমাত্র Name প্রোপার্টি নির্বাচন করেছি।
  • কুয়েরির ফলাফল হিসাবে শুধু নামের লিস্ট প্রিন্ট হবে।

Dynamic LINQ Method Syntax (Method-based)

এছাড়া, Dynamic LINQ এর method syntax ব্যবহার করেও কোড লেখা যেতে পারে। এই ক্ষেত্রে Where() বা Select() মেথডগুলো স্ট্রিং আকারে কুয়েরি ব্যবহার করতে পারবে।

using System;
using System.Linq;
using System.Linq.Dynamic.Core;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var people = new[]
        {
            new Person { Name = "Alice", Age = 30 },
            new Person { Name = "Bob", Age = 25 },
            new Person { Name = "Charlie", Age = 35 },
            new Person { Name = "David", Age = 40 }
        };

        // Method syntax with dynamic LINQ
        var dynamicQuery = people.AsQueryable().Where("Age > 30").Select("Name");

        foreach (var name in dynamicQuery)
        {
            Console.WriteLine(name); // Output: Charlie, David
        }
    }
}

এখানে:

  • Where("Age > 30") এবং Select("Name") স্ট্রিং আকারে কুয়েরি শর্ত এবং নির্বাচন ব্যবহার করা হয়েছে।

সারাংশ

Dynamic LINQ আপনাকে কোড চলাকালীন সময়ে কুয়েরি তৈরি এবং এক্সিকিউট করার সুবিধা দেয়। এটি ডাইনামিক কুয়েরি তৈরির জন্য স্ট্রিং বা রানটাইম ইনপুট ব্যবহার করে কাজ করে, যা অত্যন্ত কার্যকরী যখন ডেটা এবং কুয়েরি শর্ত আগে থেকে জানা থাকে না। System.Linq.Dynamic.Core লাইব্রেরি ব্যবহারের মাধ্যমে আপনি বিভিন্ন শর্ত, নির্বাচন, এবং মডিফিকেশন খুব সহজে করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion